mixin widgetUsage(fnSymbol)
  - const paramTag = fnSymbol.tags.find(tag => tag.title === 'param' && tag.name === '$0');
  if paramTag && paramTag.type
    .heading
      | Usage
    - const paramTypeName = paramTag.type.name;
    - const paramsType = fnSymbol.relatedTypes && fnSymbol.relatedTypes.find(t => t.name === paramTypeName);
    - if(!paramsType) console.log(fnSymbol.relatedTypes.map(t => t.name));
    pre.CodeMirror.cm-s-mdn-like
      code
        span.cm-keyword const 
        span.cm-variable search 
        | = 
        span.cm-def instantsearch
        | ( 
        span.cm-comment /* parameters */ 
        | );
        br
        br
        span.cm-keyword const 
        span.cm-def widget 
        span.cm-operator = 
        span.cm-variable instantsearch
        | .
        span.cm-variable widgets
        | .
        span.cm-variable=fnSymbol.name
        | ({ !{'\n'}
        for property in paramsType.properties
          span.cm-property='  '
            a.typed-link(href=`${navPath}#struct-${paramTypeName}-${property.name}`)=property.name
          | : 
          span.cm-def
            +type(property.type, fnSymbol.relatedTypes)
          | , !{'\n'}
        | }: 
        span.cm-def
          +type(paramsType, fnSymbol.relatedTypes)
        | );
        |
        br
        span.cm-variable search
        |.
        span.cm-property addWidget
        | (
        span.cm-variable widget
        | );
  else
    .heading
      | Usage
    pre.CodeMirror.cm-s-mdn-like
      code
        span.cm-keyword const 
        span.cm-variable search 
        | = 
        span.cm-def instantsearch
        | ( 
        span.cm-comment /* parameters */ 
        | );
        br
        br
        span.cm-keyword const 
        span.cm-def widget 
        span.cm-operator = 
        span.cm-variable instantsearch
        | .
        span.cm-variable widgets
        | .
        span.cm-variable=fnSymbol.name
        | (!{' \n'}
        for property in fnSymbol.params
          span.cm-property=`  ${property.name}`
          | : 
          span.cm-def
            +type(property.type, fnSymbol.relatedTypes)
          | , !{'\n'}
        | );
        |
        br
        span.cm-variable search
        |.
        span.cm-property addWidget
        | (
        span.cm-variable widget
        | );
